/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Datos.DB;

import Datos.Persona;
import Datos.RepresentanteEntidad;
import Excepciones.ActualizarDatosResponsableException;
import Excepciones.GuardarDatosResponsableException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Administrador
 */
public class RepresentanteEntidadDB {

    public RepresentanteEntidadDB() {
    }
    
public void grabarRepresentante(RepresentanteEntidad re) throws SQLException, GuardarDatosResponsableException{
    grabarPersona(re);
    grabarRepresentanteTabla(re);
    grabarUsuario(re);
    grabarPersonaUsuario(re);
    grabarRepresentanteEntidad(re);
    
}

public boolean grabarPersona(RepresentanteEntidad re) throws SQLException, GuardarDatosResponsableException {
    try {
        OperacionesBase db = new OperacionesBase();
        
        String query = "insert into persona(cedula, nombre, direccion, telefono) " +
                "values('"+re.getCedula()+"', '"+re.getNombre()+"', '" + 
                re.getDireccion() +"', '"+re.getTelefono() +"');";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
    } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            throw new GuardarDatosResponsableException("Error encontrado al buscar el Representante");
        }
}

public boolean grabarUsuario(RepresentanteEntidad re) throws SQLException, GuardarDatosResponsableException {
    try {
        OperacionesBase db = new OperacionesBase();
        
        String query = "insert into usuario(nick, clave) " +
                "values('"+re.getUsuario().getNombreUsuario()+"', '"+re.getUsuario().getContraseña() + "' );";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
    } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            throw new GuardarDatosResponsableException("Error encontrado al buscar el Representante");
        }
}

public boolean grabarPersonaUsuario(RepresentanteEntidad re) throws SQLException, GuardarDatosResponsableException {
    try {
        OperacionesBase db = new OperacionesBase();
        
        String query = "insert into personausuario(idpersona, idusuariop) " +
                "values('"+re.getCedula()+"', '"+re.getUsuario().getNombreUsuario()+ "' );";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
    } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            throw new GuardarDatosResponsableException("Error encontrado al buscar el Representante");
        }
}

public boolean grabarRepresentanteTabla(RepresentanteEntidad re) throws SQLException, GuardarDatosResponsableException {
    try {
        OperacionesBase db = new OperacionesBase();
        
        String query = "insert into representante(cedula) values('"+re.getCedula()+"')";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
    } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            throw new GuardarDatosResponsableException("Error encontrado al buscar el Representante");
        }
}

public boolean grabarRepresentanteEntidad(RepresentanteEntidad re) throws SQLException, GuardarDatosResponsableException {
    try {
        OperacionesBase db = new OperacionesBase();
        System.out.println(re.getCedula()+"  "+re.getEntidad().getdesripcionEntidad().toString());
        String query = "insert into representanteentidad(idrepresentante, identidad) values('"+re.getCedula()+ "' ,'"+re.getEntidad().getdesripcionEntidad()+"')";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
    } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            throw new GuardarDatosResponsableException("Error encontrado al buscar el Administrador");
        }
}

public int modificar(RepresentanteEntidad ad) throws SQLException, ActualizarDatosResponsableException {
    try {
        OperacionesBase db = new OperacionesBase();
        String query="update persona set nombre='" + ad.getNombre() + "', direccion='" + ad.getDireccion()+ "', telefono='"+ad.getTelefono()+"' where persona.cedula='"+ad.getCedula()+"'";
        int resultado = db.modificacioneliminacion(query);
        db.cerrarConexion();
        return resultado;
    } catch (SQLException ex) {
        System.out.println(ex.getMessage());
        throw new ActualizarDatosResponsableException("Error encontrado al modificar el Representante");
    } 
}


public RepresentanteEntidad buscar(String nick) throws SQLException, GuardarDatosResponsableException {
   
    System.out.println(nick+ " asdasdasd");
    
    try {
        
        OperacionesBase db = new OperacionesBase();
        String query="select * from usuario where nick ='" +nick+"'";        
        ResultSet resultado = db.seleccion(query);
        RepresentanteEntidad op=new RepresentanteEntidad();
        if (resultado!=null) {
            resultado.next();
            op.getUsuario().setNombreUsuario(resultado.getString(1));
            op.getUsuario().setContraseña(resultado.getString(2));
        } 
        query="select persona.cedula, persona.nombre, persona.direccion, persona.telefono from personausuario,persona where personausuario.idusuariop='" + nick +"' and personausuario.idpersona=persona.cedula";
        resultado = db.seleccion(query);
        if (resultado!=null) {
            resultado.next();
            op.setCedula(resultado.getString(1));
            op.setNombre(resultado.getString(2));
            op.setDireccion(resultado.getString(3));
            op.setTelefono(resultado.getString(4));
        } 
        query="select * from representante where cedula ='" + op.getCedula()+"'";
        resultado = db.seleccion(query);
        if (resultado!=null) {
            resultado.next();
            op.setCedula(resultado.getString(1));
            System.out.println(op.getCedula());
            //
            //op.setEntidad(resultado.getString(2));
            //
        } 
        db.cerrarConexion();
        return op;
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
            throw new GuardarDatosResponsableException("Error encontrado al buscar el Representante");
            
        }  
    }


public ArrayList listar() throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query="select persona.cedula, persona.nombre, persona.direccion, persona.telefono from persona,representanteentidad where persona.cedula=representanteentidad.cedula ";
        ResultSet resultado = db.seleccion(query);
        Persona per=null;
        ArrayList personas=new ArrayList();
        while (resultado.next()) {
            per=new Persona();
            per.setCedula(resultado.getString(1));
            per.setNombre(resultado.getString(2));
            per.setDireccion(resultado.getString(3));
            per.setTelefono(resultado.getString(4));
            personas.add(per);
        }
        db.cerrarConexion();
        return personas;
    }

}


